package com.dhnsoft.education.config;

/**
 * @Description
 * @ClassName CrosConfig
 * @Author dhn
 * @date 2022.05.07 23:27
 */
/**
 * <p>
 * 处理跨域
 * </p>
 *
 * @author qy
 * @since 2019-11-21
 */
import com.google.common.net.HttpHeaders;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.util.pattern.PathPatternParser;

/**
 * description:解决跨域问题
 *
 * @author wangpeng
 * @date 2019/01/02
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").
                allowedOrigins("*"). //允许跨域的域名，可以用*表示允许任何域名使用
                allowedMethods("*"). //允许任何方法（post、get等）
                allowedHeaders("*"). //允许任何请求头
                allowCredentials(true). //带上cookie信息
                exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L); //maxAge(3600)表明在3600秒内，不需要再发送预检验请求，可以缓存该结果
    }

//    @Bean
//    public CorsWebFilter corsFilter() {
//        //1.添加CORS配置信息
//
//        CorsConfiguration config = new CorsConfiguration();
//        //1) 允许的请求方式
//        config.addAllowedMethod("*");
//        //2) 允许的域
//        config.addAllowedOrigin("*");
//        //3）允许的头信息
//        config.addAllowedHeader("*");
//
//        //2.添加映射路径，我们拦截一切请求
//        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
//        source.registerCorsConfiguration("/**", config);
//
//        //3.返回新的CorsFilter.
//        return new CorsWebFilter(source);
//    }

}

